package com.ruoyi.system.domain;

import java.math.BigDecimal;
import java.util.Date;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.ruoyi.common.config.serializer.BigDecimalSerializer;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 岗位信息对象 qdkb
 *
 * @author ruoyi
 * @date 2025-04-15
 */
public class Qdkb extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键，唯一标识职位 */

    @TableId(type = IdType.AUTO)
    private Long qdkbId;

    /** 职位名称 */
    @Excel(name = "职位名称")
    private String positionName;

    /** 品牌名称 */
    @Excel(name = "品牌名称")
    private String brandName;

    /** 图片 */
    private String picUrl;



    /** 职位标签 */
    @Excel(name = "职位标签")
    private String positionLabel;

    /** 职能 */
    @Excel(name = "职能")
    private String fn;

    /** 父行业 */
    @Excel(name = "父行业")
    private String parentIndustry;

    /** 职位行业 */
    @Excel(name = "职位行业")
    private String industry;

    /** 返费规则生效时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "返费规则生效时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date effectiveDate;

    /** 返费规则 */
    @Excel(name = "返费规则")
    private String rebateRule;

    /** 价格规则 */

    @Excel(name = "价格规则")
    private String priceRule;

    /** 返费条件 */
    @Excel(name = "返费条件")
    private String rebateCondition;

    /** 返费类型 */
    @Excel(name = "返费类型")
    private String rebateType;

    /** 返费价格 */
    @Excel(name = "返费价格",prompt="一次性返费单位/(元/人),月返费单位/(元/人/月),日返费单位/(元/人/天),小时返费单位/(元/人/时)")
    private BigDecimal rebatePrice;

    /** 需求人数 */
    @Excel(name = "需求人数")
    private Long requiredQuantity;

    /** 已抢单团队TL数量 */
    @Excel(name = "已抢单团队TL数量")
    private Long recommendedOfficerCount;

    /** 岗位城市 */
    @Excel(name = "岗位城市")
    private String jobCity;

    /** 销售城市 */
    @Excel(name = "销售城市")
    private String salesCity;

    /** 职位面试城市 */
    @Excel(name = "职位面试城市")
    private String interviewCity;

    /** 用工类型 */
    @Excel(name = "用工类型")
    private String employmentType;

    /** 年龄范围 */
    @Excel(name = "年龄范围")
    private String ageRange;

    /** 工作地点 */
    @Excel(name = "工作地点",width = 150,height = 50,wrapText = true)
    private String workAdress;

    /** 工作时间 */
    @Excel(name = "工作时间")
    private String workDate;

    /** 性别要求 */
    @Excel(name = "性别要求")
    private String genderRequirement;

    /** 学历要求 */
    @Excel(name = "学历要求")
    private String educationRequirement;

    /** 工作经验要求 */
    @Excel(name = "工作经验要求")
    private String experienceRequirement;

    /** 面试地点 */
    @Excel(name = "面试地点",width = 150,height = 50,wrapText = true)
    private String interviewAddress;

    /** 面试开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "面试开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date interviewStartDate;

    /** 面试结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "面试结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date interviewSendDate;

    /** 职位负责人 */
    @TableField(exist = false)
    @Excel(name = "职位负责人")
    private String positionResponsiblePerson;

    /** 联系PM */
    @TableField(exist = false)
    @Excel(name = "联系PM")
    private String phonenumber;

    /** 职位参与人 */
    @Excel(name = "职位参与人")
    private String positionParticipants;

    /** 职位亮点 */
    @Excel(name = "职位亮点",width = 150,height = 50,wrapText = true)
    private String positionHighlights;

    /** 职位描述 */
    @Excel(name = "职位描述",width = 150,height = 50,wrapText = true)
    private String positionDescription;

    /** 沟通要点 */
    @Excel(name = "沟通要点",width = 150,height = 50,wrapText = true)
    private String communicate;

    /** 抢满标志（0代表未抢满 1代表已抢满） */
    @Excel(name = "抢满标志", readConverterExp = "N=未抢满,Y=已抢满")
    private String isFull;

    /** 抢满标志（0代表面试未截至，1代表面试已截至） */
    @Excel(name = "抢满标志", readConverterExp = "N=面试未截至,Y=面试已截至")
    private String interviewdeadline;

    /** 删除标志（0代表存在 2代表删除） */
    private String delFlag;

    /** 基本薪资 */
    @Excel(name = "基本薪资")
    private String baseSalary;

    /** 综合薪资 */
    @Excel(name = "综合薪资")
    private String totalSalary;

    /** 其他构成 */
    @Excel(name = "其他构成",width = 150,height = 50,wrapText = true)
    private String salaryComponents;

    /** 薪资备注 */
    @Excel(name = "薪资备注",width = 150,height = 50,wrapText = true)
    private String salaryNotes;

    /** 提供住宿 */
    @Excel(name = "提供住宿")
    private String hasHousingProvided;

    /** 社保 */
    @Excel(name = "社保")
    private String hasSocialInsurance;

    /** 商保 */
    @Excel(name = "商保")
    private String hasCommercialInsurance;

    /** 公积金 */
    @Excel(name = "公积金")
    private String hasHousingFund;

    /** 岗位录入的用户 */
    private Long enterUserId;


    /** 首次返费要求 */
    @Excel(name = "首次返费要求")
    private String firstRefund;

    /** 返费周期 */
    @Excel(name = "返费周期")
    private Long refundPeriod;

    /** 返费说明 */
    @Excel(name = "返费说明")
    private String refundExplanation;




    @TableField(exist = false)
    private Long[] qdkbIds;

    public String getPhonenumber() {
        return phonenumber;
    }

    public void setPhonenumber(String phonenumber) {
        this.phonenumber = phonenumber;
    }

    public Long[] getQdkbIds() {
        return qdkbIds;
    }

    public void setQdkbIds(Long[] qdkbIds) {
        this.qdkbIds = qdkbIds;
    }

    public void setQdkbId(Long qdkbId)
    {
        this.qdkbId = qdkbId;
    }

    public Long getQdkbId()
    {
        return qdkbId;
    }

    public void setPositionName(String positionName)
    {
        this.positionName = positionName;
    }

    public String getPositionName()
    {
        return positionName;
    }

    public void setBrandName(String brandName)
    {
        this.brandName = brandName;
    }

    public String getBrandName()
    {
        return brandName;
    }

    public void setPicUrl(String picUrl)
    {
        this.picUrl = picUrl;
    }

    public String getPicUrl()
    {
        return picUrl;
    }

    public void setRebateType(String rebateType)
    {
        this.rebateType = rebateType;
    }

    public String getRebateType()
    {
        return rebateType;
    }

    public void setPositionLabel(String positionLabel)
    {
        this.positionLabel = positionLabel;
    }

    public String getPositionLabel()
    {
        return positionLabel;
    }

    public void setFn(String fn)
    {
        this.fn = fn;
    }

    public String getFn()
    {
        return fn;
    }

    public void setParentIndustry(String parentIndustry)
    {
        this.parentIndustry = parentIndustry;
    }

    public String getParentIndustry()
    {
        return parentIndustry;
    }

    public void setIndustry(String industry)
    {
        this.industry = industry;
    }

    public String getIndustry()
    {
        return industry;
    }

    public void setEffectiveDate(Date effectiveDate)
    {
        this.effectiveDate = effectiveDate;
    }

    public Date getEffectiveDate()
    {
        return effectiveDate;
    }

    public void setRebateRule(String rebateRule)
    {
        this.rebateRule = rebateRule;
    }

    public String getRebateRule()
    {
        return rebateRule;
    }

    public void setPriceRule(String priceRule)
    {
        this.priceRule = priceRule;
    }

    public String getPriceRule()
    {
        return priceRule;
    }

    public void setRebateCondition(String rebateCondition)
    {
        this.rebateCondition = rebateCondition;
    }

    public String getRebateCondition()
    {
        return rebateCondition;
    }

    public void setRebatePrice(BigDecimal rebatePrice)
    {
        this.rebatePrice = rebatePrice;
    }

    public BigDecimal getRebatePrice()
    {
        return rebatePrice;
    }

    public void setRequiredQuantity(Long requiredQuantity)
    {
        this.requiredQuantity = requiredQuantity;
    }

    public Long getRequiredQuantity()
    {
        return requiredQuantity;
    }

    public void setRecommendedOfficerCount(Long recommendedOfficerCount)
    {
        this.recommendedOfficerCount = recommendedOfficerCount;
    }

    public Long getRecommendedOfficerCount()
    {
        return recommendedOfficerCount;
    }

    public void setJobCity(String jobCity)
    {
        this.jobCity = jobCity;
    }

    public String getJobCity()
    {
        return jobCity;
    }

    public void setSalesCity(String salesCity)
    {
        this.salesCity = salesCity;
    }

    public String getSalesCity()
    {
        return salesCity;
    }

    public void setInterviewCity(String interviewCity)
    {
        this.interviewCity = interviewCity;
    }

    public String getInterviewCity()
    {
        return interviewCity;
    }

    public void setEmploymentType(String employmentType)
    {
        this.employmentType = employmentType;
    }

    public String getEmploymentType()
    {
        return employmentType;
    }

    public void setAgeRange(String ageRange)
    {
        this.ageRange = ageRange;
    }

    public String getAgeRange()
    {
        return ageRange;
    }

    public void setWorkAdress(String workAdress)
    {
        this.workAdress = workAdress;
    }

    public String getWorkAdress()
    {
        return workAdress;
    }

    public void setWorkDate(String workDate)
    {
        this.workDate = workDate;
    }

    public String getWorkDate()
    {
        return workDate;
    }

    public void setGenderRequirement(String genderRequirement)
    {
        this.genderRequirement = genderRequirement;
    }

    public String getGenderRequirement()
    {
        return genderRequirement;
    }

    public void setEducationRequirement(String educationRequirement)
    {
        this.educationRequirement = educationRequirement;
    }

    public String getEducationRequirement()
    {
        return educationRequirement;
    }

    public void setExperienceRequirement(String experienceRequirement)
    {
        this.experienceRequirement = experienceRequirement;
    }

    public String getExperienceRequirement()
    {
        return experienceRequirement;
    }

    public void setInterviewAddress(String interviewAddress)
    {
        this.interviewAddress = interviewAddress;
    }

    public String getInterviewAddress()
    {
        return interviewAddress;
    }

    public void setInterviewStartDate(Date interviewStartDate)
    {
        this.interviewStartDate = interviewStartDate;
    }

    public Date getInterviewStartDate()
    {
        return interviewStartDate;
    }

    public void setInterviewSendDate(Date interviewSendDate)
    {
        this.interviewSendDate = interviewSendDate;
    }

    public Date getInterviewSendDate()
    {
        return interviewSendDate;
    }

    public void setPositionResponsiblePerson(String positionResponsiblePerson)
    {
        this.positionResponsiblePerson = positionResponsiblePerson;
    }

    public String getPositionResponsiblePerson()
    {
        return positionResponsiblePerson;
    }

    public void setPositionParticipants(String positionParticipants)
    {
        this.positionParticipants = positionParticipants;
    }

    public String getPositionParticipants()
    {
        return positionParticipants;
    }

    public void setPositionHighlights(String positionHighlights)
    {
        this.positionHighlights = positionHighlights;
    }

    public String getPositionHighlights()
    {
        return positionHighlights;
    }

    public void setPositionDescription(String positionDescription)
    {
        this.positionDescription = positionDescription;
    }

    public String getPositionDescription()
    {
        return positionDescription;
    }

    public void setCommunicate(String communicate)
    {
        this.communicate = communicate;
    }

    public String getCommunicate()
    {
        return communicate;
    }

    public void setIsFull(String isFull)
    {
        this.isFull = isFull;
    }

    public String getIsFull()
    {
        return isFull;
    }

    public void setInterviewdeadline(String interviewdeadline)
    {
        this.interviewdeadline = interviewdeadline;
    }

    public String getInterviewdeadline()
    {
        return interviewdeadline;
    }

    public void setDelFlag(String delFlag)
    {
        this.delFlag = delFlag;
    }

    public String getDelFlag()
    {
        return delFlag;
    }

    public void setBaseSalary(String baseSalary)
    {
        this.baseSalary = baseSalary;
    }

    public String getBaseSalary()
    {
        return baseSalary;
    }

    public void setTotalSalary(String totalSalary)
    {
        this.totalSalary = totalSalary;
    }

    public String getTotalSalary()
    {
        return totalSalary;
    }

    public void setSalaryComponents(String salaryComponents)
    {
        this.salaryComponents = salaryComponents;
    }

    public String getSalaryComponents()
    {
        return salaryComponents;
    }

    public void setSalaryNotes(String salaryNotes)
    {
        this.salaryNotes = salaryNotes;
    }

    public String getSalaryNotes()
    {
        return salaryNotes;
    }

    public void setHasHousingProvided(String hasHousingProvided)
    {
        this.hasHousingProvided = hasHousingProvided;
    }

    public String getHasHousingProvided()
    {
        return hasHousingProvided;
    }

    public void setHasSocialInsurance(String hasSocialInsurance)
    {
        this.hasSocialInsurance = hasSocialInsurance;
    }

    public String getHasSocialInsurance()
    {
        return hasSocialInsurance;
    }

    public void setHasCommercialInsurance(String hasCommercialInsurance)
    {
        this.hasCommercialInsurance = hasCommercialInsurance;
    }

    public String getHasCommercialInsurance()
    {
        return hasCommercialInsurance;
    }

    public void setHasHousingFund(String hasHousingFund)
    {
        this.hasHousingFund = hasHousingFund;
    }

    public String getHasHousingFund()
    {
        return hasHousingFund;
    }

    public void setEnterUserId(Long enterUserId)
    {
        this.enterUserId = enterUserId;
    }

    public Long getEnterUserId()
    {
        return enterUserId;
    }

    public void setFirstRefund(String firstRefund) {
        this.firstRefund = firstRefund;
    }

    public String getFirstRefund() {
        return firstRefund;
    }
    public void setRefundPeriod(Long refundPeriod) {
        this.refundPeriod = refundPeriod;
    }

    public Long getRefundPeriod() {
        return refundPeriod;
    }
    public void setRefundExplanation(String refundExplanation) {
        this.refundExplanation = refundExplanation;
    }

    public String getRefundExplanation() {
        return refundExplanation;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("qdkbId", getQdkbId())
                .append("positionName", getPositionName())
                .append("brandName", getBrandName())
                .append("picUrl", getPicUrl())
                .append("rebateType", getRebateType())
                .append("positionLabel", getPositionLabel())
                .append("function", getFn())
                .append("parentIndustry", getParentIndustry())
                .append("industry", getIndustry())
                .append("effectiveDate", getEffectiveDate())
                .append("rebateRule", getRebateRule())
                .append("priceRule", getPriceRule())
                .append("rebateCondition", getRebateCondition())
                .append("rebatePrice", getRebatePrice())
                .append("requiredQuantity", getRequiredQuantity())
                .append("recommendedOfficerCount", getRecommendedOfficerCount())
                .append("jobCity", getJobCity())
                .append("salesCity", getSalesCity())
                .append("interviewCity", getInterviewCity())
                .append("employmentType", getEmploymentType())
                .append("ageRange", getAgeRange())
                .append("workAdress", getWorkAdress())
                .append("workDate", getWorkDate())
                .append("genderRequirement", getGenderRequirement())
                .append("educationRequirement", getEducationRequirement())
                .append("experienceRequirement", getExperienceRequirement())
                .append("interviewAddress", getInterviewAddress())
                .append("interviewStartDate", getInterviewStartDate())
                .append("interviewSendDate", getInterviewSendDate())
                .append("positionResponsiblePerson", getPositionResponsiblePerson())
                .append("positionParticipants", getPositionParticipants())
                .append("positionHighlights", getPositionHighlights())
                .append("positionDescription", getPositionDescription())
                .append("communicate", getCommunicate())
                .append("isFull", getIsFull())
                .append("interviewdeadline", getInterviewdeadline())
                .append("delFlag", getDelFlag())
                .append("baseSalary", getBaseSalary())
                .append("totalSalary", getTotalSalary())
                .append("salaryComponents", getSalaryComponents())
                .append("salaryNotes", getSalaryNotes())
                .append("hasHousingProvided", getHasHousingProvided())
                .append("hasSocialInsurance", getHasSocialInsurance())
                .append("hasCommercialInsurance", getHasCommercialInsurance())
                .append("hasHousingFund", getHasHousingFund())
                .append("enterUserId", getEnterUserId())
                .append("createTime", getCreateTime())
                .append("firstRefund" , getFirstRefund())
                .append("refundPeriod" , getRefundPeriod())
                .append("refundExplanation" , getRefundExplanation())
                .toString();
    }
}
